Fix cell editing
authorMatthias Clasen <mclasen@redhat.com>
Sun, 7 Jun 2020 12:43:36 +0000 (08:43 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 7 Jun 2020 12:46:31 +0000 (08:46 -0400)
When translating coordinates from an event, we need to
take the surface transform into account. This makes
double-clicking on editable cells in treeviews work
again.

Fixes: #2831
gtk/gtkcellarea.c

index 1a6c29f636ee50df3e5198d5a1ce062aa706f0ff..04000f2c91054af57597d1f2dfcb150dd0103bf0 100644 (file)
 #include "gtkprivate.h"
 #include "gtksnapshot.h"
 #include "gtkstylecontext.h"
+#include "gtknative.h"
 
 #include <gobject/gvaluecollector.h>
 
@@ -1043,6 +1044,7 @@ gtk_cell_area_real_event (GtkCellArea          *area,
           GtkCellRenderer *focus_renderer;
           GdkRectangle     alloc_area;
           double event_x, event_y;
+          double nx, ny;
           double x, y;
           GtkNative *native;
 
@@ -1051,7 +1053,8 @@ gtk_cell_area_real_event (GtkCellArea          *area,
           gdk_event_get_position (event, &event_x, &event_y);
 
           native = gtk_widget_get_native (widget);
-          gtk_widget_translate_coordinates (GTK_WIDGET (native), widget, event_x, event_y, &x, &y);
+          gtk_native_get_surface_transform (native, &nx, &ny);
+          gtk_widget_translate_coordinates (GTK_WIDGET (native), widget, event_x - nx, event_y - ny, &x, &y);
           event_x = x;
           event_y = y;